@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 144ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u$d0L 2L>%L-Lx%Lo(L(L(L(L4)L2)L%L%L%L%L%LU,L`,L(L)L,L(L+L$(L".L,L(L'L'L'Lm'Lv'L,L,L'L(L'L'L.L.LkT}.L.L.L.L.L.L.L#*L.*L&L&L.&L=&LF&LQ&Lk&Lr&L{&L&L&L&L)L)L)L)L,.L)L:'L'L&LL'L['LR'L*L*L.L&L&L&La'LB(LR(LU}.L(L/L9/L6/L/L/L/L/L0L0L+0LC0L/L^(Lj(L)'L@'Lo/Lr/LO/L%L'L%L% -膚 ɩҍD҅ 2 22V}2 a(2222 ` -Lq -l ԤՄԅ`ȱ`ȱ`ȥ`W}ԑȥՑ`ԤՄ`ԤԅդՅ` '0=D '04.5 '0.( '0 ' ' 8`ԅ`X} & & & &ѐ & &ʥ %аЪ %Зьɛ &0 &0 `Y}ԥ`Ɠƒ` % &LS* %LS* %օ0֥0 S*` %eԥe` %La* % % o*L% %Lo* % &L|* %L|* %Z}L% % Ʌ` BLV䅆L' %ԅ`TU HH 'hhL, B VԩL%p v'P[}KJBDEL, &fL=) %ԅ`Ę eĘ +L4( % & %` %Ԅԅ`\} -``&eԅԥeՅ`L% o(ԨL%Ԅ & %eԥe` Ԅ &ɛ +0` d) ذI]} ( 8ԅԩՅL%L,ȹɛ꩛` d)f & 8fԆՅɛ摥0L^}?)$0`2 2L,(,ɛM(M( )ɛ )򩀅` %ԍ`ԄL%_}ԄL%ɛԆL% &󅐩f =) ؐL(L4,ԅԥՅL%82ԭ 2L%ԤՄԅե``}8ե`eեe` B* K+fL% B* +fL%8ԨՄԅL% & B*ԥՄԩՅօפԥFf G+a}ԥ K+ԅՅԥզЦ`ԅՅʩ0B+=+ B+ 08f$˹ `' d b}+1ԦԄզՄFԐ eਊe&Lh+Ԇ`hh L, +Ff&֐ݥ ԆՅԠ&&&8થc}օԈ`քע +Ե 8`晄 ,L,`GHFH` U,0ɛȄ ؐL,HI h 8d}ԅԩՅL%?S, ,򦅩DEBHIL,ɛ +` +` %HI BL,e}՝HIB VL,L%B Vú.hh -l. -0dd-8/ i - 0-- ,f}@ . ,... + x' $(.Ԏ.8ե ".LO-- , `,ɛD(C` ذ -L- -L 2 -- ,g}L- - -L-l lp '8`ERROR- ?Run address> BASIC exitTrace:P8Յթԅ` ,.L, .-h}ȘH *h00,)` & ҅ԭ ) |*օեׅ` L,0թԅթᨊઐi}```Յ`8Յթԅ`0 ԩ`ԅ`` ' %`BԝK)I JD/ELVS:)H)h yj}` & % & %TԅUՅV`&B ,NLսM` & %ԝL՝MN%BL, & /` BHIL, & /`k}B JKL, %ԅUՅV & %ԅT`)ҩҊ H) hҘ` %)xԩL% %))Lc&LZ& %l})pԩL% %)|LZ&Lc& V0L-$2~2'@'@DDhDDL 2 $ppҠD Z$1@ H$ ?$ $ <m}G@vD $K@D $5@ !$PD '$5@ !$R22D '$N@hD $Z@D $a@n} !$ $D $ h9 Z$ ?$ Z$c@ H$ Z$ -$ᢐD <$2}3թ@D $L*3Lo}3ԩթ@D $LY3L3ԩթ@D $~33L3@wD $L3 h9p}L2 h9 Z$ ?$ Z$@ H$ Z$ -$ᢐD <$ԩթ@D $L43{4L%6ԩթ@q}D $L/4L%6ԩթ@D $Ls4@D $Ly4 h9L3 h9|44 Z$ ?$ Z$@ r}H$ Z$ -$ᢐD <$ԩթڅ@D $L4LV5ppҠDԩթ@4z5D s}$L5LV5ԩթ܅@D $LP5/@ !$PD '$LV5 h9Ly4 h9 Z$ ?$ Z$ޠ@ H$ Z$ -${55t}ᢐD <$ԩթڅ@D $L5L%6ԩթ@D $L5L%6ԩթ@u}5y6D $L6/@ !$RD '$L%6 h9LV5 h9 Z$ ?$ Z$A H$ Z$ -$ hD <$ԩթ @hv}D $z66L6N@hD $L> h9 Z$ ?$ Z$A H$ ?$ Z$ ?$ Z$5A H$ ?$Щ r$LD '$LD !$C@w} $L6L7LD6x7 !$?@ $L7L 2L6 Z$1@ H$ ?$8 %vD{D $hD~D $ Z$x}{D f$ Q$ Z$y77ᢌD f$ Q$ppҠD =ԩթ@D $L8 Z$1@ y}H$ ?$ Z$ ?$ Z$ ?$ Z$ ?$ Z$Q7x8A H$ ?$ Z$ `$FD '$ԩթjAD $L?8 ~; Z$FD !$ z}$ᢀ K$FD !$a@ $L8 Z$y88ᢧD K$ ?$L8é r$HD '$RHD !$pA $L8 Z$ ?$ Z{}$rA H$ ?$ Z$ ?$L9 Z$ ?$ Z$A H$HD !$ E$8x9A H$ ?$ Z$ T$ Z$ T$0 Z$ T$ppҠD Z$A H$ ?$Щ|} r$LD '$LD !$C@ $L_9Lb9L69L 2L$5@ !$OA $$ $y99 Z$ؠA H$ ?$A !$B $$ $ Z$wD K$ ?$}}ԩթjAD $L9A !$A@ $$ $ Z$B H$9x: ?$ԩթ@D $LH:~}A !$A@ $$ $ Z$ B H$ ?$PD !$5@ $L:A !$B $$ $ Z$By:: H$ ?$PD !$/@ $L:A !$}B $$ $ Z$B H$ ?$RD !$5@ $L:A !$'B $$ $ Z$)B H$ ?$RD !$/@:v; $L$;A !$'B $$ $} Z$,B H$ ?$A !$'@ $$ $ Z$0B H$ ?$A !$'@ $$ $ Z$ hD K$ ?$5@ !$E@w;; $$ $`T r$JD '$}^D !$3@ $L; Z$ ?$ Z$ $L> Z$A@ !$ $ᢀ K$RD !$/@ $L> Z$)D !$ $ᢀ K$-D !$ $}ᢀ K$/D !$n>> $ᢀ K$` Z$1@ H$ ?$/@ !$^D '$8 %vDD $0 Z$ T$ R Z$1@} H$ ?$0 Z$ᢓD f$>l? Q$ppҠD Z$3D H$vD K$7D H$ ?$ Z$ ?$? %/@ !$ND '$0 Z$ }`$`D '$ Z$`D !$ $ᢀm?? K$`D !$a@ $L? Z$ᢧD K$ ?$ ~;ND $BD $LE?é r$HD }'$pA $L?L83@ !$^D '$ ~;R?b@ Z$ ?$0 Z$ T$5@ !$^D '$ Z$1@ H$ ?$ Terminate when condition met.o30WHILE WHILE Start a WHILE-}WEND loop to end when condition met.o30WEND WEND Terminate a WHILE-END loop.o30ELSE ELSE } Optional extension for IF. The IF condition must not be followed by a "THEN", but terminated by end-of-line or c}olon.o30ENDIF ENDIF Ends an IF-ELSE-ENDIF or IF-ELSE condition. Note that this allows an IF condition to} span more than one BASIC line, provided the "IF" statement is structured as shown in Note 4.o30DO DO } Starts an "infinite" DO loop.o30LOOP LOOP Cycle back to the start of a DO loop.o30EXIT EXIT } Exit a DO-LOOP loop.o30PROC PROC name Start definition of procedure.o30ENDPROC ENDPROC } End definition of procedure.o30EXEC EXEC name Execute procedure name.General Programmingo}30PAUSE PAUSE n Pause processing for n/50 seconds.o30RENUM RENUM n,i,j Renumber the program sta}rting at line n,first number is i, increment is j. This function will handle GOTOs, TRAPs, and all other line referenc}es except those which involve variables or computed values.o30DEL DEL n,i Delete lines n-i.o30DUMP } DUMP Display all variables and values. For numeric arrays, the numbers are the DIMed values plus one. For s}trings, the first number is the current LENgth of it and the second number is the DIMed size of it. DUMP also lists procedur}e names and labels with their line values.o30 DUMP name DUMP to device name, such as "P:" or "D:DUMP.D}AT".o30TRACE TRACE Trace program during execution.o30 TRACE - Turns trace mode off} (Default).o30DSOUND DSOUND n,f,d,v Form of SOUND which activates channel-pairing for increased frequency range.o}30 DSOUND Turns off all sounds.o30GO TO GO TO n Alternate form of GOTO.o30*L } *L Turn line-indent on (Default).o30 *L - Turns line-indent off.o30*F *F} (or *F +) Special mode for FOR..NEXT loops which corrects a bug in Atari BASIC. Seems that in Atari BASIC, an "illeg}al" reverse loop like "FOR X=2 TO 1:PRINT X:NEXT X" will execute once even though the condition is met initially (X is alread}y greater than 1). Turbo BASIC fixes this bug, but leaves it available for Atari BASIC programs which may take advantage of }it.o30 *F - Turns off the special FOR..NEXT mode to make Turbo BASIC act like Atari BASIC.o30*B } *B (or *B +) Command which allows the break key to be trapped via the "TRAP" command within a program.o30 } *B - Turns off the special BREAK key mode.o30-- -- Special form of REM which pu}ts 30 dashes in a program listing.Line Labelso30# # name Assigns the current line number to the }label name. This is a convenient way to get around the problem of renumbering when using variables as line numbers. Label}s can be thought of as a special form of variable, as they occupy the variable name table along with the "regular" variables.} We also believe that the number of variables allowed has been increased from 128 to 256 to allow for the addition of these }labels.o30GO# GO# name Analagous to the GOTO command.Modificationso30CLOSE CLOSE } Close channels 1-7.o30DIM DIM a(n) Will automatically assign a value of zero to all elements of the numer}ic array being dimensioned, and null characters to all elements of a string (The LEN is still variable, however, and initiall}y zero).o30GET GET name Wait for a key press, assign the value to name. Same as "OPEN #7,4,0,"K:":GET #}7,name:CLOSE #7".o30INPUT INPUT "text";a,b... Prints text as a prompt before asking for variable(s), same as Microsof}t-BASIC.o30LIST LIST n, List program from line n to end.o30ON ON a EXEC n1,n2,... Variation of }ON...GOSUB for procedures. N1, n2 and so on are names of procedures to be run.o30 ON a GO# n1,n2,... Similar to }ON...GOTO except that line labels are used instead of line numbers.o30POP POP This command now pops t}he runtime stack for all four types of loops.o30PUT PUT n Same as "PRINT CHR$(n)";o30RESTORE RESTOR}E #name Restores the data line indicated by the label name.o30RND RND Parentheses are no long}er needed at the end of this command, but it will still work if they are there.o30SOUND SOUND Turn off al}l sounds.o30TRAP TRAP #name TRAPs to the line referenced by the label name.TURBO BASIC FUNCTIONS:Ar}ithmetic/Logico30HEX$ HEX$(n) Convert n to hex string.o30DEC DEC(a$) Convert hex str}ing A$ to decimal.o30DIV n DIV i Integer quotient of n/i.o30MOD n MOD i Integer remai}nder of n/i.o30FRAC FRAC(a) Fractional part of a.o30TRUNC TRUNC(a) Truncates fractional p}art of a.o30RAND RAND(n) Generates random number 0-n.o30$ $nnnn Allows input of he}xidecimal numbers, but they are converted to decimal. Ex: "FOR I=$0600 to $067F" => "FOR I=1536 to 1663".o30& n &} i 8-bit boolean AND.o30! n ! i 8-bit boolean OR.o30EXOR n EXOR i 8-b}it Exclusive-OR.Memoryo30DPEEK DPEEK(m) Double-PEEK of m,m+1.o30TIME TIME Time o}f day(numeric).o30TIME$ TIME$ Time of day string, HHMMSS. Unfortunately, the time commands don't work pr}operly because they were written for European Ataris which operate at 50 Hz, instead of 60 Hz like American ones, the net res}ult being that they gain 12 minutes each hour.o30INKEY$ INKEY$ Returns last character typed.o30INSTR }INSTR(x$,a$) Returns relative location of start of string A$ within X$ (returns 0 if not found). The match must be ex}act; strings with the same letters but differences in case or type (normal or inverse) will not be found.o30 INSTR}(x$,a$,i) i specifies the starting point of the search.o30UINSTR UINSTR(x$,a$) Same as INSTR, does not dist}inguish between case or inverse characters. Ex: UINSTR("HeLlO","hello") returns 1.o30 UINSTR(x$,a$,i) Specifie}s optional starting point.o30ERR ERR Value of last error number.o30ERL ERL Li}ne last error occurred at.Constants%0%1%2%3These four constants simply stand for the numbers 0-3, respectively. }The difference with using these in a program is that "X=1" requires 10 bytes, whereas "X=%1" only needs 4 (numbers require 7 }bytes, 6 for the number plus an identifier preceeding it. It is always a good practice to make variables for numbers that ar}e used more than three times in a program).NOTES:1. Variable, Procedure and Label names may contain the underscore (_)} character.2. To print a double-quote (") in a text string, use two of them together, instead of the Atari BASIC method of }using CHR$(34). Ex: "TEST";CHR$(34);"TEXT" becomes "TEST""TEXT" in Turbo-BASIC, both of which produce the output => TEST"TE}XT.3. Upon initial boot-up, TURBO-BASIC looks for a BASIC file named AUTORUN.BAS. If it finds an AUTORUN.BAS file, it will }automatically load and run this file.4. Turbo-BASIC also prints out English descriptions of all errors, including several n}ew ones for errors involving the new commands:Error - 22 ?NEST = Loops not properly nested.Error - 23 ?WHILE = WEND with no} corresponding WHILE.Error - 24 ?REPEAT = UNTIL with no corresponding REPEAT.Error - 25 ?DO = LOOP with no corresponding DO}.Error - 26 ?EXIT = EXIT is outside a loop.Error - 27 ?XPROC = Error executing PROC.Error - 28 ?EXEC = ENDPROC with no cor}responding EXEC.Error - 29 ?PROC = Procedure does not exist.Error - 30 ?# = Label does not exist.Also, Error 15 has been e}xpanded to include an UNTIL which relates to a REPEAT which has been deleted.4. A multiline IF is constructed like this:1}0 IF X > 1020 PRINT X-1030 GO# TOO_BIG40 ELSE50 PRINT X60 GO# X_IS_OK70 ENDIFNote also the use of line la}bels in the GOTO statements.---Dave & Laura YearkeE50 PRINT X60 GO# X_IS_OK70 ENDIFNote also the use of line la5 THE TURBO COMPILER Documentation and Operating Instructions by Dave Arlington } Original Program by Frank Ostrowski This documentation is provided by the Western New York Atari Users Group and ma }y be reprinted freely provided this credit is included. I know everyone is still rubbing their hands in glee over  }TURBO-BASIC, the new public domain Basic interpreter imported from Holland and Germany. This month we are proud to present } a new treat from our international friends overseas, the TURBO COMPILER. The TURBO COMPILER will increase the speed } of your TURBO BASIC programs 3-5 times and regular Atari BASIC programs can be speeded up to 10-15 times faster. Unfortu }nately, like TURBO BASIC, the TURBO COMPILER will only run on the XL/XE series of computers. In addition, the finished com}piled programs will also only run on the XL/XE series. The TURBO COMPILER is very easy to operate. It can be used wi}th more than one disk drive, even Drive 8, the 130XE ramdisk. On the TURBO COMPILER disk, you will find several files. Th}e important ones for the operation of the TURBO COMPILER are COMPILER.COM and RUNTIME.COM. Before you begin, you should pr}epare two disks. The first one should be a blank formatted disk with DOS.SYS and DUP.SYS written on it. Your second disk }should contain your BASIC program (TURBO or ATARI BASIC). To begin, insert the TURBO COMPILER disk into your drive a}nd turn your computer on. When it has finished loading you will be in TURBO BASIC. Type DOS to get to the DOS 2.5 menu. C}hoose DOS Option 'L', Load Binary File and load the file COMPILER.COM. After a short while, you will see a screen full of} German. If you do not read German, do not worry, that is what this article is for! At any time that you are on this scree}n, you may reboot your system by hitting Control-R or you may return to DOS by hitting Control-D. You will be asked if you} really want to do this. If you do, don't forget to 'J' for Ja and not 'Y' for Yes!! To compile your programs, remo}ve the TURBO COMPILER disk from the drive and insert the disk with the program you want to compile. (If you have two drive}s, insert your disk with the program to compile in Drive 2 and the blank DOS disk in Drive 1.) Press the number 1 key (Nu}mber 2 if you have two drives). A complete listing of all the files on that drive will appear on the screen with one highl}ighted in inverse video. Using the arrow keys, highlight the file you want to compile and hit Return. That's all there is} to it! At the top of the screen, you will see the line numbers fly by as the program is compiled. When it is finish}ed, you will be prompted for a file name to save your compiled program under. It has to have an extender of CTB (for Compi}led Turbo Basic). The program will not let you use any other extender. At this time, if you have one drive, you should re}move your disk with your original program on it and replace it with your blank DOS disk. If you want your compiled progra }m to be an AUTORUN file, you should name it AUTORUN.CTB. Then the file will automatically load and run at bootup time. !} There is one more step that you must do to get a completely runnable compiled program. Go back to DOS and copy the fil"}e RUNTIME.COM from the TURBO COMPILER disk to the disk with your compiled program on it. Rename the RUNTIME.COM file to th#}e name AUTORUN.SYS. Your disk is now ready to go. The TURBO COMPILER does not compile to runnable code, you must run the $}RUNTIME.COM file to run your compiled program. One technical note on the TURBO COMPILER: If you're not familiar with%} other compilers for the ATARI computers, you should know that many have trouble compiling certain types of statements or &}insist that you organize your program structure in a certain way. So far none of these problems have occured on any progr'}ams we have tested with the TURBO COMPILER. The only statement that wouldn't compile so far is the END statement. The only(} program structure that we have had trouble with is a FOR-NEXT loop that has two or more NEXTs for one FOR. For example:)} 10 FOR X=1 TO 5 20 IF X=3 THEN NEXT X 30 NEXT X Other than those two examples, we have had no problems compilin*}g any type of program, either TURBO or ATARI BASIC. Please let us know of any problems you run into compiling any types o+}f statements or programs. Whether you program in TURBO BASIC or just want to turbocharge your old Atari BASIC program,}s to super speed, I'm sure you will find the TURBO COMPILER will fit all your speed needs. -------------------------------}----uper speed, I'm sure you will find the TURBO COMPILER will fit all your speed needs. ------------------------------ Text Tidier 1.0 by Dave Yearke As you may recall, we received from a Dutch users' group Tu/}rbo BASIC, a language for XL/XE computers which is compatible with Atari BASIC but offers over 60 new features and is thr0}ee times faster. Well, they've done it again, this time they sent us the Turbo BASIC Compiler, a program which compiles B1}ASIC programs so they run three times faster than Turbo BASIC! I wanted to write a program to demonstrate the power of th2}ese two new programs, so after a few nights of work Text Tidier was born. Text Tidier was designed to eliminate much3} of the editing that goes into processing files downloaded from such services as CompuServe. These files often have exce4}ss spaces for justification, carriage returns every line, and all kinds of other annoying things that must be weeded out. 5} The most bothersome types of text files are those which use the Control-J Control-M combination for linefeed and carriag6}e return. For MS-DOS machines that's fine, but our Ataris use a totally different character. In its simplest form, T7}idier strips out linefeeds (^J) and turns ASCII carriage returns (^M) into ATASCII returns (code 155). It also breaks do8}wn the file into smaller pieces that will fit into a word processor like AtariWriter or PaperClip. I've downloaded files9} that were over 100K long, far too big to fit into any word processor for the Atari! When you run the program, the f:}irst thing it asks for is the maximum file size for the output files. 12,000 is pretty good for AtariWriter, although thi;}s depends on what DOS is being used, whether a printer driver is loaded, and so on. For PaperClip, I've found that on my <}XL about 24,000 bytes can be loaded, although I would recommend about 20,000 so you have room to edit the file. Next it a=}sks for the Input file. Put the disk in the drive and enter the name. If you don't enter a device like "D:" it will defa>}ult to drive one. All Output files will be named "SPLIT.0xx", where "xx" is the number of the file being written, starti?}ng at zero. Be careful not to overwrite any existing files with the same name! Now come the formatting parameters. @} When it asks "CONVERT RETURN TO SPACE (Y/N)" type "Y" if you want all carriage returns to be converted. This is nice if A}you want to reformat the text in your word processor. This option only converts single returns; if it encounters more aB}fter the first one it will leave them alone because it assumes that it is a break between two paragraphs. The next optionC}, "TIDY UP SPACING (Y/N)", is probably the most powerful. It will get rid of multiple spaces between words, excess spaceD}s before return characters, convert ASCII Tab characters (^I) to 5 spaces, and will make sure that two spaces follow all E}periods, colons, question marks, and exclamation points, and that one space follows all commas, even if it has to add themF}. One note: it will not add spaces to periods which have no spaces after them, because it can't tell if it is part of aG} decimal number. The next option, "PROMPT BEFORE WRITING (Y/N)", should get a "Y" response if you need to switch diskH}s between reading and writing, and an "N" response if you want to let it go without interruption. The "BREAK FILES ON SPI}ACE (Y/N)" simply assures that a word won't be split over two files (this may not work if the last word before writing is J}over 15 characters long, but that's pretty rare). The last option is a convenience to those with the AtariWriter or PapeK}rClip word processors. If you select either "A" or "P" at the prompt, it will write the "chain next file" command at theL} end of all files except the last one. In addition, it will put a paragraph symbol where it thinks it's appropriate, and M}convert the ASCII formfeed character (^L) to its AW or PC equivalent. If you select "N" for "neither", then the paragrapN}hs will be indented five spaces and formfeeds will be left alone. By the way, the program only allows character codeO}s within the range 26-127, plus CR (13) and FF(12). Characters higher than 127 have the high bit stripped to make them "P}normal," while control characters are ignored. If you want to allow inverse and control characters (although this can be Q}a potential problem with true ASCII files; control characters can have bizarre meanings, and true ASCII does not allow chR}aracter codes higher than 127. If you get any, it's probably a transmission error), change line 215 to: 215 REPEAT :GES}T #1,N:UNTIL (N<>LF) This will only filter linefeed characters. This program was written out of necessity, but I hT}>also had a lot of fun doing it. If you have any questions, comments, or suggestions, please let me know (I can be foundU} lurking at the meetings or on BATES in the "Ask Dave Y!" message base). I'd like to correct any bugs you find (gasp!) quiV}ckly, and any features I haven't thought of we'll make part of Text Tidier 2.0! to correct any bugs you find (gasp!) quiTpB%DOS SYSB*)DUP SYSBBSAUTORUN SYSBREADME BbTURBODOCTXTB'TCOMPILRTXTB).TIDIER TXT